Contents
  1. 1. Introduction
  2. 2. 资源和rest
  3. 3. wikipedia
  4. 4. 更进一步的理解

Introduction

今天宿舍发起了一场“什么事rest接口,rest接口和以往的接口,有什么不同?”的争论。最后由我们伟神进行了权威解答。核心要点是——资源,rest接口是以资源为导向的。为了搞清楚这些问题,同时试图理解资源和rest的关系,进行了一番google。

资源和rest

用google搜索“restful api 設計”,找到阮一峰的文章,里面有这样一篇文章,叫理解RESTful架构.

好么!!这里就有“资源”一说。一开始就讲到Representational State Transfer的主语是资源。这个上来一看,瞬间就蒙蔽了。不是rest么,和resource有毛关系。

总之,看完他的文章后,我的理解是:网络软件(也就是网站)之间,或者是网站前后台之间通过直接的请求获得所需资源(也就是URI),这次请求中不包含任何有关表示层的数据。其意思可能是,通过URI与服务器(可能吧)进行交互后,获得资源的同时,也改变了服务器的状态(至于什么状态不明确)。

另外,关于这边文章后面的误区,完全是在逗我玩。因为这些说法,和他的另外一篇文章RESTful API 设计指南中说到的版本的问题,可以理解是两个不同的意思。下面引用一下,看看。

理解RESTful架构中有:

另一个设计误区,就是在URI中加入版本号:

1
2
3
http://www.example.com/app/1.0/foo
http://www.example.com/app/1.1/foo
http://www.example.com/app/2.0/foo

因为不同的版本,可以理解成同一种资源的不同表现形式,所以应该采用同一个URI。版本号可以在HTTP请求头信息的Accept字段中进行区分(参见Versioning REST Services):

1
2
3
Accept: vnd.example-com.foo+json; version=1.0
Accept: vnd.example-com.foo+json; version=1.1
Accept: vnd.example-com.foo+json; version=2.0

RESTful API 设计指南中有:

三、版本(Versioning)
应该将API的版本号放入URL。

1
https://api.example.com/v1/

另一种做法是,将版本号放在HTTP头信息中,但不如放入URL方便和直观。Github采用这种做法。

wikipedia

维基百科中的REST
看完后,感觉是这样的:REST是一种软件架构风格。需要客户端与服务器、连接协议无状态性、能够利用Cache增进性能。里面还介绍了REST在web方面的应用。详情继续戳REST链接。

更进一步的理解

更进一步的理解是在这个连接发现的.【顺便记住这个ppt分享地址http://www.slideshare.net/】

下面是上述连接中的两张。

传统网页流程

api网页工程师的看法

还没看完,明天继续。

Contents
  1. 1. Introduction
  2. 2. 资源和rest
  3. 3. wikipedia
  4. 4. 更进一步的理解